var WaitList = function() {
    this._HTMLDom = null;

    // Util class
    this.mUtil = null;
    
    // 지역 설정 골프장 데이터
    this.mCourseByArea = new Array();

    // 리스트 데이터 (이중 배열) : 1차 배열 기준 - 날짜, 2차 배열 기준 - 날짜별 부킹 상품들
    mListData = new Array();
    // 상단 배열의 인덱스
    mListDataCurIndex = 0;
    
    // 현재 페이지 임시 저장 데이터
    mBookingData = new Object();
};

WaitList.prototype = {
    constructor : WaitList,
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // InterlockBooking class 에 연동요청
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    /**
     * 웨이팅 예약 부킹 리스트 가져오는 연동
     */
    getWaitBookingDataByDate : function($date, $area, $index) {
        var thisClass = this;
        var data = new Object();
        var interlockBooking = new InterlockBooking();

        $.mobile.showPageLoadingMsg();

        data.date = $date;
        data.region = $area;

        interlockBooking.getTimeBookingDataByDate(data, function($jsonData) {
            var objJson = new MJson();
            // alert("getTimeBookingDataByDate success :: realtime :: " + JSON.stringify($jsonData));
            // alert("success check :: " + objJson.checkResult($jsonData));
            if (objJson.checkResult($jsonData)) {
                var i = 0;
                var jsonItem = null;
                var data = null;

                mListData[$index] = new Array();
                // 데이터 오브젝트 이름
                // Json Object에서 Items 데이터만 추출하여 데이터 저장
                if ($jsonData.msp.contents.items.length == undefined) {
                    // TODO
                    jsonItem = $jsonData.msp.contents.items;
                    data = {
                        // 예약 번호 : reserv__seq
                        "reserv_num" : jsonItem.reserv__seq,
                        // 지역 : region
                        "region" : jsonItem.region,
                        // 예약 날짜 : reserv__date
                        "date" : jsonItem.reserv__date,
                        // 예약 시간 : reserv__time
                        "time" : jsonItem.reserv__time,
                        // 골프장 ID : golfclub__id
                        "club_id" : jsonItem.golfclub__id,
                        // 골프장 이름 : golfclub__name
                        "club_name" : jsonItem.golfclub__name,
                        // 코스 ID : course__info__id1, course__info__id2, course__info__id3
                        "course_id" : [jsonItem.course__info__id1, jsonItem.course__info__id2, jsonItem.course__info__id3],
                        // 코스 이름 : course__info__name1, course__info__name2, course__info__name3
                        "course_name" : [jsonItem.course__info__name1, jsonItem.course__info__name2, jsonItem.course__info__name3],
                        // 홀 : hole
                        "hole" : jsonItem.hole,
                        // 가격 : price
                        "price" : jsonItem.price,
                        // 그린피 : greenfee
                        "greenfee" : jsonItem.greenfee,
                        // 이벤트 - 그린피 할인 여부 : greenfee__use__yn, 카트비 할인 여부 : cartfee__use__yn, 식비 할인 여부 : food__use__yn, 선물 여부 : present__use__yn, 기타 여부 : etc__use__yn
                        "event" : [jsonItem.greenfee__use__yn, jsonItem.cartfee__use__yn, jsonItem.food__use__yn, jsonItem.present__use__yn, jsonItem.etc__use__yn],
                        // 예약 여부 : reserv__status
                        "status" : jsonItem.reserv__status
                    };

                    mListData[$index].push(data);
                } else {
                    while (i < $jsonData.msp.contents.items.length) {
                        // TODO
                        jsonItem = $jsonData.msp.contents.items[i];
                        data = {
                            // 예약 번호 : reserv__seq
                            "reserv_num" : jsonItem.reserv__seq,
                            // 지역 : region
                            "region" : jsonItem.region,
                            // 예약 날짜 : reserv__date
                            "date" : jsonItem.reserv__date,
                            // 예약 시간 : reserv__time
                            "time" : jsonItem.reserv__time,
                            // 골프장 ID : golfclub__id
                            "club_id" : jsonItem.golfclub__id,
                            // 골프장 이름 : golfclub__name
                            "club_name" : jsonItem.golfclub__name,
                            // 코스 ID : course__info__id1, course__info__id2, course__info__id3
                            "course_id" : [jsonItem.course__info__id1, jsonItem.course__info__id2, jsonItem.course__info__id3],
                            // 코스 이름 : course__info__name1, course__info__name2, course__info__name3
                            "course_name" : [jsonItem.course__info__name1, jsonItem.course__info__name2, jsonItem.course__info__name3],
                            // 홀 : hole
                            "hole" : jsonItem.hole,
                            // 가격 : price
                            "price" : jsonItem.price,
                            // 그린피 : greenfee
                            "greenfee" : jsonItem.greenfee,
                            // 이벤트 - 그린피 할인 여부 : greenfee__use__yn, 카트비 할인 여부 : cartfee__use__yn, 식비 할인 여부 : food__use__yn, 선물 여부 : present__use__yn, 기타 여부 : etc__use__yn
                            "event" : [jsonItem.greenfee__use__yn, jsonItem.cartfee__use__yn, jsonItem.food__use__yn, jsonItem.present__use__yn, jsonItem.etc__use__yn],
                            // 예약 여부 : reserv__status
                            "status" : jsonItem.reserv__status
                        };
                        mListData[$index].push(data);
                        i++;
                    }
                }
                // 리스트 생성

                // thisClass.addList(mListData[mListDataCurIndex]);
                thisClass.setList();
                mListDataCurIndex++;
            } else {
                console.log("getRealTimeListData error");
                console.log($jsonData);
            }

            $.mobile.hidePageLoadingMsg();
        }, function(e) {
            alert("fail :: " + JSON.stringify(e));
            $.mobile.hidePageLoadingMsg();
        });
    },
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Method
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Event
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // Initialize
    ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    onPageShow : function() {
         // console.log("WaitList onPageBeforeShow!");
        var i = 0;

        this.mUtil = document.globalObj.util;

        // 데이터 초기화
        mListData = new Array();
        mBookingData = document.globalObj.BOOKING_DATA;

        // TODO
        var $layer = $("article#time_booking_list");
        this._HTMLDom = {
            "$layer" : $layer,
            // List View
            "$listview" : $layer.find("dl:first"),
            // 타이틀
            "$listtitle" : $layer.find("dl:first > dt"),
            // 리스트 아이템
            "$listitem" : $layer.find("dl:first > dd:first")
        };

        $layer.empty();

        // 상단 텝 초기화
        $("#sel_rsv > option[value = " + mCalData.searchReservation + "]").attr("selected", "ture");
        $('#sel_rsv').change();
        $("#sel_area > option[value = " + mCalData.searchArea + "]").attr("selected", "ture");
        $('#sel_area').change();
        $("#sel_course > option[value = " + mCalData.sreachCourse + "]").attr("selected", "ture");
        $('#sel_course').change();

        while (i < mCalData.selectDate.length) {
            this.getTimeBookingDataByDate(mBookingData.selectDate[i].date, mBookingData.selectDate[i].area, i);
            i++;
        }

    }
};

